]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
PointerWatcher: keep a reference to the idle monitor
authorGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 17 Jan 2013 21:11:01 +0000 (22:11 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 18 Jan 2013 20:14:09 +0000 (21:14 +0100)
If nothing references the idle monitor, it can be finalized at GC,
causing it to have no effect. Worse, if the finalization happens at
wrong time, the pointer watcher can be permanently off, disabling the
message tray.

https://bugzilla.gnome.org/show_bug.cgi?id=691976

js/ui/pointerWatcher.js

index 9f7f2909cbb62772ab23b40c3f749c88330a7015..dc31a1dd890133d98fd06c6d9ec55dcf00f713bb 100644 (file)
@@ -41,10 +41,10 @@ const PointerWatcher = new Lang.Class({
     Name: 'PointerWatcher',
 
     _init: function() {
-        let idleMonitor = new GnomeDesktop.IdleMonitor();
-        idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
-        idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
-        this._idle = idleMonitor.get_idletime() > IDLE_TIME;
+        this._idleMonitor = new GnomeDesktop.IdleMonitor();
+        this._idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
+        this._idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
+        this._idle = this._idleMonitor.get_idletime() > IDLE_TIME;
         this._watches = [];
         this.pointerX = null;
         this.pointerY = null;